Computer graphics workstations are used for a number of different applications such as computer-aided design (CAD) and computer-aided manufacturing (CAM). These applications often require 3D modeling capability and generally require greater speed in rendering more complicated models as time progresses.
Thus pressure is placed on designers of computer graphics workstations to perform more complicated calculations to provide more accurate rendering of models in shorter amounts of time. Many design techniques, beyond the scope of this description, may be (and are) used by workstation designers to achieve these goals.
One possible embodiment of a computer graphics accelerator is shown in FIG. 2. This system is described in detail below. For now, note that the tile builder, texture mapper, and display unit all communicate with a single frame buffer memory through a memory controller. In this embodiment the frame buffer memory contains the texture data in addition to the data required for display and the data that is being manipulated prior to display (double buffering). Since the frame buffer memory is accessed by different functions, the memory controller must contain arbitration logic to determine which function has access to the frame buffer memory at any given moment. Sometimes two or more functions will require access to the frame buffer memory at the same time and the memory controller must prioritize these requests. Reducing the number of memory requests would reduce the number of such collisions and increase system performance.
In a computer graphics system, the frame buffer memory may be used to store digital data that will be sent to the computer monitor for display. This data may be stored in memory as intensity of red, green and blue colors for each pixel. It may alternately be stored as a gray scale, or other representations of color. Often one or more memory locations are used to store the data representing a single pixel on the computer monitor. Sometimes the entire data bitmap is duplicated so that the processor is allowed to perform calculations on one bitmap while the other is being displayed on the monitor. This is known in the art as double buffering.
Also, there may be additional data stored in the frame buffer to allow the computer to display separate images for each eye to produce stereo images. In this case, there will need to be twice as much area for storage of images in the frame buffer as needed for a monocular display. The frame buffer of a stereo graphics system may contain memory for the left image front and back (for double buffering) and for the right image front and back (also for double buffering).
When the image is to be displayed on the monitor, the display unit must receive pixel data from the correct section of the frame buffer. In the example shown in FIG. 5, for any given pixel on the monitor the display unit will display the data stored in either the left front, left back, right front, right back, or overlay portions of the frame buffer memory. Some computer graphics systems read the pixel data from each of these areas of frame buffer memory and then in the display unit, determine which must be displayed for any given pixel. Generally, a group of pixels, known as a tile, is read from the frame buffer in each read operation. If all of the pixels in the tile require the same region of frame buffer memory to be displayed, for example the left front, all of the other data is discarded by the display unit. This may be a waste of frame buffer bandwidth if the region of frame buffer memory needed for this particular tile may be determined prior to reading from the frame buffer. Thus, there is a need in the art for techniques that reduce the amount of frame buffer memory accesses to perform a given function thereby improving performance of the computer graphics system.